﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;

namespace CleanToolkit.FieldsExctration
{
    public class SchemaFieldsExtractor : FieldsExtractor
    {

        /// <summary>
        /// Création d'une déclaration de SPField de Schéma sur la base de la déclaration du SPField
        /// </summary>
        /// <param name="xSchemaField"></param>
        /// <returns></returns>
        protected override XElement GetFieldDef(XElement xSchemaField)
        {
            XElement result = null;
            //--------------------------------------------------

            // On copie le SPField fourni, et on en supprime
            //      * Group
            //      * StaticName
            result = new XElement(xSchemaField);

            // Certains atributs ne doivent pas figurer dans le Schéma de liste
            foreach (string attrToExclude in CleanConstants.AttributesToExcludeFromSchemaFields)
            {
                if (result.Attribute(attrToExclude) != null)
                {
                    result.Attribute(attrToExclude).Remove();
                }
            }

            // On ne conserve que les valeurs des formules --> Même pas vrai d'abord
            //if (result.Elements(CleanConstants.CST_SpNamespace + "Formula").Count() <= 0)
            //{
            //    result.Elements().Remove();
            //}

            //--------------------------------------------------
            return result;
        }
    }
}
